package persistencia;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import modelo.Mensagem;

public class DAOMensagem {

	  private Connection conexao;
	    
	    private void obterConexao(){
	        try {
	            Class.forName("com.mysql.jdbc.Driver");
	            conexao = DriverManager.getConnection("jdbc:mysql://localhost/sirp", "root", "123");
	        } catch (ClassNotFoundException e) {
	            e.printStackTrace();
	        } catch (SQLException e) {
	            e.printStackTrace();
	        }
	    }
	    
	    private void liberarConexao(){
	        try {
	            conexao.close();
	        } catch (SQLException e) {
	            e.printStackTrace();
	        }
	    }    
	    
	    public void inserir(Mensagem mensagem){
	    	obterConexao();
	    	try {
	            PreparedStatement pstat = conexao.prepareStatement("INSERT INTO Mensagem (codigo, conteudo) VALUES (?, ?)");
	            pstat.setInt(1, mensagem.getCodigo());
	            pstat.setString(2, mensagem.getConteudo());
	            pstat.executeUpdate();
	            
	        } catch (SQLException e) {
	            e.printStackTrace();
	        }
	        liberarConexao();
	    }
	    public void alterar(Mensagem mensagem){
	    	obterConexao();
	    	try{
	    		PreparedStatement pstat= conexao.prepareStatement("UPDATE Mensagem SET codigo=?, conteudo=?");
	    		pstat.setInt(1, mensagem.getCodigo());
	    		pstat.setString(2, mensagem.getConteudo());
	    		pstat.executeUpdate();
	    	}catch (SQLException e){
	    		e.printStackTrace();
	    	}
	    	liberarConexao();
	    }
	    
	    public void excluir(Mensagem mensagem){
	    	obterConexao();
	    	try{
	    		Statement stat= conexao.createStatement();
	    		stat.executeUpdate("DELETE from Mensagem WHERE codigo = '" + mensagem.getCodigo() + "' ");
	    		
	    	}catch(SQLException e){
	    		e.printStackTrace();
	    	}
	    	liberarConexao();
	    }
	    
	    public Mensagem procurarMensagem(int codigo){
	    	obterConexao();
	    	try{
	    		PreparedStatement stat = conexao.prepareStatement("SELECT * FROM Mensagem WHERE codigo = ?");
	            stat.setInt(1, codigo);
	            ResultSet set = stat.executeQuery();
	            
	            if (set.next()){
	            	Mensagem mensagem= new Mensagem();
	            	mensagem.setCodigo(set.getInt("codigo"));
	            	mensagem.setConteudo(set.getString("conteudo"));
	            	 stat = conexao.prepareStatement("SELECT count(*) FROM Mensagem WHERE codigo = ?");
		                stat.setInt(1, codigo);
		                set = stat.executeQuery();
		                
		                return mensagem;  }	
	            	
	            }catch(SQLException e){
	            	e.printStackTrace();
	            }
	            liberarConexao();
		        return null;
	    	}
	    
}
